package com.pm.service;

import com.pm.entity.Task;

import java.util.List;

/**
 * 任务服务接口
 */
public interface TaskService {
    
    /**
     * 创建任务
     * @param task 任务信息
     * @return 创建的任务
     */
    Task createTask(Task task);
    
    /**
     * 更新任务
     * @param task 任务信息
     * @return 更新的任务
     */
    Task updateTask(Task task);
    
    /**
     * 删除任务
     * @param id 任务ID
     * @return 删除结果
     */
    boolean deleteTask(String id);
    
    /**
     * 根据ID查找任务
     * @param id 任务ID
     * @return 任务信息
     */
    Task findById(String id);
    
    /**
     * 获取所有任务
     * @return 任务列表
     */
    List<Task> getAllTasks();
    
    /**
     * 根据项目ID查找任务
     * @param projectId 项目ID
     * @return 任务列表
     */
    List<Task> findByProjectId(String projectId);
    
    /**
     * 根据分配人ID查找任务
     * @param assigneeId 分配人ID
     * @return 任务列表
     */
    List<Task> findByAssigneeId(String assigneeId);
    
    /**
     * 根据创建人ID查找任务
     * @param creatorId 创建人ID
     * @return 任务列表
     */
    List<Task> findByCreatorId(String creatorId);
    
    /**
     * 根据状态查找任务
     * @param status 任务状态
     * @return 任务列表
     */
    List<Task> findByStatus(String status);
    
    /**
     * 更新任务状态
     * @param id 任务ID
     * @param status 新状态
     * @return 更新结果
     */
    boolean updateTaskStatus(String id, String status);
    
    /**
     * 分配任务
     * @param id 任务ID
     * @param assigneeId 分配人ID
     * @return 分配结果
     */
    boolean assignTask(String id, String assigneeId);
}